package com.fau.wmbj.server.flowable.service;


import com.fau.wmbj.server.flowable.domain.bo.ModelBo;
import com.fau.wmbj.server.flowable.entity.ActModel;
import com.fau.wmbj.server.utils.Page;
import com.fau.wmbj.server.utils.Pageable;
import org.flowable.engine.repository.Model;

import javax.servlet.http.HttpServletResponse;
import java.util.List;


/**
 * 模型管理 服务层
 */
public interface ActModelService {

    /**
     * 分页查询模型
     *
     * @param modelBo  模型参数
     * @param pageable 参数
     * @return 返回分页列表
     */
    Page<Model> page(ModelBo modelBo, Pageable pageable);

    /**
     * 新增模型
     *
     * @param modelBo 模型请求对象
     * @return 结果
     */
    Model saveNewModel(ModelBo modelBo);

    /**
     * 查询模型
     *
     * @param modelId 模型id
     * @return 模型数据
     */
    ActModel getInfo(String modelId);

    /**
     * 修改模型信息
     *
     * @param modelBo 模型数据
     * @return 结果
     */
    Model update(ModelBo modelBo);

    /**
     * 编辑模型XML
     *
     * @param modelBo 模型数据
     * @return 结果
     */
    boolean editModelXml(ModelBo modelBo);

    /**
     * 模型部署
     *
     * @param id 模型id
     * @return 结果
     */
    boolean modelDeploy(String id);

    /**
     * 导出模型zip压缩包
     *
     * @param modelIds 模型id
     * @param response 响应
     */
    void exportZip(List<String> modelIds, HttpServletResponse response);

    /**
     * 复制模型
     *
     * @param modelBo 模型数据
     * @return 结果
     */
    boolean copyModel(ModelBo modelBo);
}
